#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
//【实验内容】
//一、基础编程题
//编写程序，使用while语句计算公式的结果：sum = 1 + 1 / 3 + 1 / 5 + … + 1 / n。
//（1）程序分析设计（使用标准流程图符号完成算法流程图，和实验内容一一对应）
//
//（2）源代码（不能截图，只能复制粘贴）
//
//（3）运行结果截图（和程序清单一一对应，只截取相应运行结果截图）
int main()
{
	float sum = 0;
	float i = 0;
	int n = 0;
	printf("请输入n的整数，且n是奇数\n");
	scanf("%d", &n);
	while (i<n)
	{
		sum = sum + 1/(i + 1);
		i = i + 2;
	}
	printf("%f", sum);
	return 0;
}


//2、	编写程序，输入一个正整数并判断其为奇数还是偶数，并计算到该数的奇数和或偶数和，输入数据为奇数，
// 则计算1 + 3 + 5 + … + n的奇数和；输入数据为偶数，则计算2 + 4 + 6 + … + n的偶数和。
//（1）程序分析设计（使用标准流程图符号完成算法流程图，和实验内容一一对应）
//
//（2）源代码（不能截图，只能复制粘贴）
//
//（3）运行结果截图（和程序清单一一对应，只截取相应运行结果截图）
int main()
{
	int n , i = 0;
	scanf("%d", &n);//7   //  1 3 5 7
	int sum = 0;    // 8       2 4 6 8
	if (n%2==0)//判断奇偶
	{
		for (i=2;i<=n;i+=2)
		{
			sum += i;
		}
		printf("偶数和=%d\n", sum);
	}
	else
	{
		for (i = 1; i <= n; i += 2)
		{
			sum += i;
		}
		printf("奇数和=%d\n", sum);

	}
	return 0;
}

//
//3、	编程程序，输入一个正整数，判断它是否为素数。
//（1）程序分析设计（使用标准流程图符号完成算法流程图，和实验内容一一对应）
//
//（2）源代码（不能截图，只能复制粘贴）
//
//（3）运行结果截图（和程序清单一一对应，只截取相应运行结果截图）
//

//质数（Prime number），又称素数，指在大于1的自然数中，除了1和该数自身外，无法被其他自然数整除的数。
// （也可定义为只有1与该数本身两个正因数的数）

2 3 4 5 6 7 8 9 10 11
2 3 5 7 是素数
int main()
{
	int n ,i = 0;
	scanf("%d", &n);
	for (i=2;i<=n-1;i++)
	{
		if (n % i == 0)
		{
			printf("n=%d不是素数\n", n);
			break;
	
		}
		else
		{
			printf("n=%d是素数\n", n);
			break;
		}
	}

	return 0;
}

//4、	编程程序，输入一个正整数，计算各位数字之和及平方和。
//（1）程序分析设计（使用标准流程图符号完成算法流程图，和实验内容一一对应）
//
//（2）源代码（不能截图，只能复制粘贴）
//
//（3）运行结果截图（和程序清单一一对应，只截取相应运行结果截图）
//

5
5 + 4 + 3 + 2 + 1
5^2 + 4^2 + 3^2 +2 ^2 + 1
int main()
{
	int n , i = 0;
	int sum1=0, sum2 = 0;
	
	scanf("%d", &n);
	for (i=1;i<=n;i++)
	{
		sum1 += i;
		sum2 += i * i;
	}
	
	printf("数字之和=%d 平方和=%d", sum1, sum2);

	return 0;
}


//二、代码改错题
//序列求和：输入一个正实数eps，计算并输出下式的值，精确到最后一项的绝对值小于eps（保留6位小数）。请使用do - while语句实现循环。
//s = 1 - 1 / 4 + 1 / 7 - 1 / 10 + 1 / 13 - 1 / 16 + ⋯
//输入输出示例
//Input eps : 1E-4
//S = 0.835699
//分析下列程序代码能否实现, 如果程序中存在错误, 请修改程序中的错误, 然后运行修改后的程序。

int main(void)
{
	int flag, n;
	double eps, item, s;

	printf("Input eps:");
	scanf("%lf", &eps);
	flag = 1;
	s = 0;
	n = 1;
	do {
		item =(double) 1 / n;
		s = s + flag * item;
		flag = -flag;
		n = n + 3;
	} while (item > eps);
	printf("s=%.6f\n", s);

	return 0;
}
//
//
//2.找完数：找出200以内的所有完数，并输出其因子。
// 一个数若恰好等于它的各因子之和，即称其为完数，例如6 = 1 + 2 + 3，
// 其中1、2、3为6的全部因子，6即为完数。
//输入输出示例
//1 = 1
//6 = 1 + 2 + 3
//28 = 1 + 2 + 4 + 7 + 14
//分析下列程序代码能否实现, 如果程序中存在错误, 请修改程序中的错误, 然后运行修改后的程序。
//#include<stdio.h>
int main(void)
{
	int i, j = 0;

	for (i = 1; i <= 200; i++) 
	{
		int s = 1;
		for (j = 2; j <= i / 2; j++)
			if (i % j == 0)
				s = s + j;
		if (s == i)
		{
			printf("%d=1", i);

			for (j = 2; j <= i / 2; j++)
				if (i % j == 0)
					printf("+%d", j);
			printf("\n");
		}
	}

	return 0;
}



//三：拓展编程题
//编程题：百鸡问题。公鸡每只5元，母鸡每只3元，小鸡每三只1元；现在有100元，要求买100只鸡，问公鸡、母鸡、小鸡各多少只？
//提示：设公鸡数量x只（取值范围0 - 19），母鸡数量y只（取值范围0 - 32），小鸡数量z只（取值范围0 - 100），
//同时应满足x + y + z = 100以及5x + 3y + z / 3 = 100两个条件。
//（1）程序分析设计（使用标准流程图符号完成算法流程图，和实验内容一一对应）
//
//（2）源代码（不能截图，只能复制粘贴）
//
//（3）运行结果截图（和程序清单一一对应，只截取相应运行结果截图）
int main()
{
	int x, y, z = 0;
	for (x = 0; x <= 19; x++)
	{
		for (y = 0; y <= 32; y++)
		{
			for (z = 0; z <= 100; z++)
			{
				if (x + y + z == 100  && 5 * x + 3 * y + z / 3 == 100)
				{
					printf("公鸡=%d 母鸡=%d 小鸡=%d\n", x, y, z);
				}
			}
		}
	}
	return 0;
}